A CompactFlash (CF) card is a mass storage device that conforms to the CompactFlash standard. The CompactFlash Association (CFA) developed the CompactFlash standard and subsequently published the CompactFlash+specification (CF+) and CompactFlash Specification Revision 4.0 (CF4). The earlier type of CF cards utilizes common memory data storages. Currently, CF+ and CF4 cards are expanded to include input/output (I/O) devices or magnetic disk data storages, depending on specific applications. The CF+ and CF4 cards support a higher data transfer rate than the earlier type of CF cards.
The earlier type of CF cards may only operate in the PC Card ATA (Advanced Technology Attachment) using memory mode. CF4 and CF+ cards can operate in the PCMCIA (Personal Computer Memory Card International Association) mode which includes the PC Card ATA using I/O mode and the PC Card ATA using memory mode. Moreover, the CF4 cards can operate in the True IDE (Integrated Development Environment) mode and the CF+ cards may also function in the True IDE mode. In each mode, data is transferred according to a corresponding read/write timing cycle. Therefore, CF, CF+ and CF4 cards operating in different modes may have different data transfer rates.
Typically, a controller is used to control data transfer between a host (e.g., a computer) and a storage device. The controller is usually set in a predetermined mode to communicate with the storage device according to a predetermined data transfer rate. However, as CF, CF+ and CF4 cards may support different data transfer rates, the data transfer performance may be reduced. For example, if the controller is set in the PC Card ATA using memory mode, a CF+/CF4 card operating in the PC Card ATA using memory mode may have a lower data transfer rate compared to the CF+/CF4 card operating in the True IDE mode.
The PCMCIA standard is widely used in many kinds of host devices such as digital cameras, digital music players, laptop computers, personal communicators, etc. The PCMCIA standard defines PCMCIA cards or PC cards for storage expansion, input/output (I/O) support, etc. Depending on the type of PCMCIA bus, the PC cards can include 16 bit PC cards (e.g., random access memory (RAM) and flash memory) and 32 bit PC cards (e.g., CardBus PC cards such as modem, network and TV cards). For example, a 16 bit PC card employs a 16 bit PCMCIA bus to transfer data. Likewise, a 32 bit PC card employs a 32 bit PCMCIA bus to transfer data.
The True IDE mode can include a programmed input and output (PIO) mode and a direct memory access (DMA) mode. The 16 bit PC cards may only support the PIO mode. An operating system, e.g., MICROSOFT® WINDOWS, of the host device can provide a universal device driver to drive the 16 bit PC card. For example, the universal device driver can enable the host device to work in the PIO mode. In the PIO mode, a central processing unit (CPU) of the host device executes instructions to access I/O address space so as to perform data transfer with the PC cards. In the PIO mode, the CPU may be occupied for the entire duration of the read or write operation.
The CF card, e.g., including the CF+ and CF4 cards, is also a 16 bit mass storage device. A dedicated card reader, e.g., a USB reader or a 1394 reader, can connect the CF card to the host device. The CF card may support both the PIO mode and the DMA mode. In the DMA mode, the card reader can transfer data between the CF card and memory of the host device without occupying processor time, thus allowing computation, e.g., performed by the CPU, and the data transfer, e.g., performed by the card reader, to be accomplished simultaneously. As such, the DMA mode has a higher data transfer rate than the PIO mode.
The CF card can be plugged in a PC card slot with a plug adapter or a universal card reader if the dedicated card reader is unavailable. In other words, the 16 bit PC card and the CF card can share an identical card socket, e.g., a 64 pin dual row interface, on the host device. In this condition, the CF card may be used as a 16 bit PC card. For example, the universal device driver of the operating system can enable the CF card to work in the PIO mode instead of the DMA mode. As such, the data transfer rate of the CF card may be decreased, and the efficiency of the host device may be degraded.